package com.aegean.MonitorExamSYS.center.dao;

import java.io.File;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.hibernate.criterion.DetachedCriteria;

import com.aegean.MonitorExamSYS.center.component.ConductionInfoForExaminee;
import com.aegean.MonitorExamSYS.center.component.PositionInfoForExaminee;
import com.aegean.MonitorExamSYS.center.component.SelectCity;
import com.aegean.MonitorExamSYS.center.component.SelectConductionInfo;
import com.aegean.MonitorExamSYS.center.component.SelectExamInfo;
import com.aegean.MonitorExamSYS.center.component.SelectExaminee;
import com.aegean.MonitorExamSYS.center.component.SelectPosition;
import com.aegean.MonitorExaxSYS.model.BigType;
import com.aegean.MonitorExaxSYS.model.CenterValue;
import com.aegean.MonitorExaxSYS.model.ConductionValue;
import com.aegean.MonitorExaxSYS.model.ExamInfo;
import com.aegean.MonitorExaxSYS.model.ExamPosition;
import com.aegean.MonitorExaxSYS.model.ExamineeQualification;
import com.aegean.MonitorExaxSYS.model.ExamineeValue;
import com.aegean.MonitorExaxSYS.model.MessageBox;
import com.aegean.MonitorExaxSYS.model.MonitorValue;
import com.aegean.MonitorExaxSYS.model.PositionQualification;
import com.aegean.MonitorExaxSYS.model.SmallType;

public interface CenterDao {
	public void insertService(CenterValue service);

	public CenterValue searchService(CenterValue service);

	public int searchBigTypeCount();

	public List<BigType> searchPartBigTypes(int start, int limit);

	public int searchSmallTypeCount(String bigName);

	public List<SmallType> searchPartSmallTypes(String bigName, int start,
			int limit);

	public int searchExamValueCount(int small_Id);

	public List<ExamInfo> searchPartExamValues(int small_Id, int start,
			int limit);

	public boolean searchBigType(String name);

	public int searchBigId(int exam_Id);

	public List<BigType> searchBigList();

	public boolean searchSmallType(String name);

	public boolean searchExamValue(String name);

	public boolean addBigType(BigType one);

	public boolean addExamValue(ExamInfo one, int Small_Id);

	public boolean addSmallType(SmallType one, int bigType_Id);

	public boolean editBigType(BigType one);

	public boolean editExamValue(ExamInfo one, File photo);

	public boolean editSmallType(SmallType one);

	public boolean deleteBigType(String[] big_Name);

	public boolean deleteSmallType(int[] big_Ids);

	public boolean deleteExamValue(int[] Exam_Ids);

	public List<ExamInfo> searchLeastExams();

	public List<SelectExamInfo> showExanList(int small_Id, int state)
			throws Exception;

	public List<ExamInfo> showExanListForMonitorAndExaminee(int small_Id,
			int state, int status) throws Exception;

	public List<SelectConductionInfo> showConductionList(int exam_Id,
			int state, Date startTime, Date endTime) throws Exception;

	public List<ExamPosition> showPositionList(int unit_Id, Date startTime,
			Date endTime);

	public List<ExamPosition> showPositionLists(Object[] ids, Date startTime,
			Date endTime);

	public boolean confirmArrageForCP(Map<Integer, List<Integer>> cp,
			Map<Integer, Integer> cpc, int exam_Id, Date exam_StartTime);

	public List<SelectPosition> showPositionListForMonitor(int exam_Id);

	public List<MonitorValue> showMonitorsListForMonitor(int unit_Id,
			Date startTime, Date endTime);

	public boolean confirmArrangeMonitors(int exam_Id, Date startTime,
			Map<Integer, List<Integer>> maps);

	public List<ConductionInfoForExaminee> showConductionListForExaminee(
			int exam_Id);

	public List<PositionInfoForExaminee> showPositionListForExaminee(
			int exam_Id, int con_Id);

	public List<SelectExaminee> showExamineesList(int exam_Id);

	public boolean confirmExaminees(
			Map<Integer, Map<Integer, List<SelectExaminee>>> maps, Date time,
			int exam_Id);

	public List<SelectCity> showCitys();

	public List<ConductionValue> showConductions(String city_Name, int start,
			int limit);

	public boolean writeMessage(int conduction_Id, String theme, String contents);
	
	public List<MessageBox> showMessages(int state,int status,int conduction_Id,int start,int limit);
	public boolean replyMessage(int conduction_Id,String theme,String contents,int beforeId);
}
